#ifndef GAME_H
#define GAME_H
#include <map>
class Unit;
class Building;
class Game;
class Unit_container;
class Unprocessed_action; //a very, very bad name for a class.
class Player;
#include "includes.h"

class Game{
	private:
		Unit_container *units;
		int id;
		long map_width, map_height;
	public:
		Game();
		~Game();
		void add_unit(Unit* unit);
};

class Unit_container{
	private:
		map <int, Unit*> by_id;
	public:
		Unit_container* type_filter(char c);
		Unit_container* area_filter(long x, long y, long w, long h);
		Unit* get_unit(int id);
		Unit* add_unit(Unit* unit, int id);
		Unit* del_unit(int id);
};

class Unprocessed_action{
	public:
};

class Unit{
	private:
		int id;
		char c;
		long x, y;
	public:
		void move_to(long ix, long iy);
		Unit();
		~Unit();
};
class Building{
	private:
		int id;
		long x, y;
	public:
		void move_to(long ix, long iy);
};

#endif

